﻿using System;
using System.Collections;
using System.Configuration;
using System.Data;
using System.Linq;
using System.Text;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Xml.Linq;
using System.Security.Cryptography;
using BLL.BusinessClasses;


namespace WebSite.General
{
    public partial class Login : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (this.Request.QueryString["mode"] == "1") 
            {
                this.Panel_LoginUniversitario.Visible = true;

                this.Panel_LoginAdmin.Visible = false;
                this.Panel_LoginEmpresa.Visible = false;
            }
            if (this.Request.QueryString["mode"] == "admin")
            {
                this.Panel_LoginAdmin.Visible = true;

                this.Panel_LoginEmpresa.Visible = false;
                this.Panel_LoginUniversitario.Visible = false;
            }

        }

        protected void Button_LoginUniversitario_Click(object sender, EventArgs e)
        {
            try
            {
                this.Session["UsuarioDeSesion"] = new UsuarioEgresado(this.TextBox_UserNameUniversitario.Text.Trim(), 
                                                                      Encryption.GetMD5Hash(this.TextBox_PassWordUniversitario.Text.Trim()));
                this.Session["UserID"] = ((UsuarioEgresado)this.Session["UsuarioDeSesion"]).ID;

                if (((UsuarioEgresado)this.Session["UsuarioDeSesion"]).FechaPrimerIngreso == null)
                {
                    ((UsuarioEgresado)this.Session["UsuarioDeSesion"]).FechaPrimerIngreso = DateTime.Now;
                }
                ((UsuarioEgresado)this.Session["UsuarioDeSesion"]).FechaUltimoIngreso = DateTime.Now;

                ((UsuarioEgresado)this.Session["UsuarioDeSesion"]).Actualizar();

                Response.Redirect(@"../Egresado/Perfil.aspx");
                return;
            }
            catch
            {
                try
                {
                    this.Session["UsuarioDeSesion"] = new UsuarioEstudiante(this.TextBox_UserNameUniversitario.Text.Trim(),
                                                                            Encryption.GetMD5Hash(this.TextBox_PassWordUniversitario.Text.Trim()));
                    this.Session["UserID"] = ((UsuarioEstudiante)this.Session["UsuarioDeSesion"]).ID;

                    if (((UsuarioEstudiante)this.Session["UsuarioDeSesion"]).SiActivo)
                    {
                        if (((UsuarioEstudiante)this.Session["UsuarioDeSesion"]).FechaPrimerIngreso == null)
                        {
                            ((UsuarioEstudiante)this.Session["UsuarioDeSesion"]).FechaPrimerIngreso = DateTime.Now;
                        }
                        ((UsuarioEstudiante)this.Session["UsuarioDeSesion"]).FechaUltimoIngreso = DateTime.Now;

                        ((UsuarioEstudiante)this.Session["UsuarioDeSesion"]).Actualizar();

                        Response.Redirect(@"../Egresado/Perfil.aspx");
                        return;
                    }
                    else
                    {
                        this.Label_ResultMessageLoginUniversitario.Text = "Su usuario está desactivado";
                        this.Label_ResultMessageLoginUniversitario.Visible = true;
                        this.TextBox_PassWordUniversitario.Text = "";
                        return;
                    }
                }
                catch
                {
                    this.Label_ResultMessageLoginUniversitario.Text = "Error: Revise su nombre de usuario y contraseña o intente nuevamente en unos minutos";
                    this.Label_ResultMessageLoginUniversitario.Visible = true;
                    this.TextBox_PassWordUniversitario.Text = "";
                    return;
                }
            }
        }
        protected void Button_LoginEmpresa_Click(object sender, EventArgs e)
        {
            try
            {
                this.Session["UsuarioDeSesion"] = new UsuarioEmpresa(this.TextBox_UserNameEmpresa.Text.Trim(), 
                                                                     Encryption.GetMD5Hash(this.TextBox_PassWordEmpresa.Text.Trim()));
                this.Session["EmpresaID"] = ((UsuarioEmpresa)this.Session["UsuarioDeSesion"]).EmpresaProcedencia.ID;

                if (((UsuarioEmpresa)this.Session["UsuarioDeSesion"]).SiActivo && ((UsuarioEmpresa)this.Session["UsuarioDeSesion"]).EmpresaProcedencia.SiActiva)
                {
                    if (((UsuarioEmpresa)this.Session["UsuarioDeSesion"]).FechaPrimerIngreso == null)
                    {
                        ((UsuarioEmpresa)this.Session["UsuarioDeSesion"]).FechaPrimerIngreso = DateTime.Now;
                    }
                    ((UsuarioEmpresa)this.Session["UsuarioDeSesion"]).FechaUltimoIngreso = DateTime.Now;

                    ((UsuarioEmpresa)this.Session["UsuarioDeSesion"]).Actualizar();

                    Response.Redirect(@"~/Empresa/Perfil.aspx");
                    return;
                }
                else
                {
                    this.Label_ResultMessageLoginEmpresa.Text = "Su usuario está desactivado";
                    this.Label_ResultMessageLoginEmpresa.Visible = true;
                    this.TextBox_PassWordEmpresa.Text = "";
                    return;
                }
            }
            catch (Exception)
            {
                this.Label_ResultMessageLoginEmpresa.Text = "Error: Revise su nombre de usuario y contraseña o intente nuevamente en unos minutos";
                this.Label_ResultMessageLoginEmpresa.Visible = true;
                this.TextBox_PassWordEmpresa.Text = "";
                return;
            }
        }
        protected void Button_LoginAdmin_Click(object sender, EventArgs e)
        {
            try
            {
                this.Session["UsuarioDeSesion"] = new UsuarioAdministrativo(this.TextBox_UserNameAdmin.Text.Trim(), 
                                                                            Encryption.GetMD5Hash(this.TextBox_PassWordAdmin.Text.Trim()));

                Response.Redirect(@"~/Administrador/ControlPanel.aspx");
                return;
            }
            catch 
            {
                this.Label_ResultMessageLoginAdmin.Text = "Error: Revise su nombre de usuario y contraseña o intente nuevamente en unos minutos";
                this.Label_ResultMessageLoginAdmin.Visible = true;
                this.TextBox_PassWordAdmin.Text = "";
                return;
            }
        }       
    }
}

#region Viejo pero poderoso Login


//try
//{
//    this.Session["UsuarioDeSesion"] = new UsuarioAdministrativo(this.TextBox_UserName.Text.Trim(), this.TextBox_PassWord.Text.Trim());

//    Response.Redirect(@"~/Administrador/ControlPanel.aspx");
//    return;
//}
//catch (Exception)
//{
//    try
//    {
//        this.Session["UsuarioDeSesion"] = new UsuarioEgresado(this.TextBox_UserName.Text.Trim(), this.TextBox_PassWord.Text.Trim());
//        this.Session["UserID"] = ((UsuarioEgresado)this.Session["UsuarioDeSesion"]).ID;

//        if (((UsuarioEgresado)this.Session["UsuarioDeSesion"]).FechaPrimerIngreso == null)
//        {
//            ((UsuarioEgresado)this.Session["UsuarioDeSesion"]).FechaPrimerIngreso = DateTime.Now;
//        }
//        ((UsuarioEgresado)this.Session["UsuarioDeSesion"]).FechaUltimoIngreso = DateTime.Now;

//        ((UsuarioEgresado)this.Session["UsuarioDeSesion"]).Actualizar();

//        Response.Redirect(@"../Egresado/Perfil.aspx");
//        return;
//    }
//    catch (Exception)
//    {
//        try 
//        {
//            this.Session["UsuarioDeSesion"] = new UsuarioEstudiante(this.TextBox_UserName.Text.Trim(), this.TextBox_PassWord.Text.Trim());
//            this.Session["UserID"] = ((UsuarioEstudiante)this.Session["UsuarioDeSesion"]).ID;

//            if (((UsuarioEstudiante)this.Session["UsuarioDeSesion"]).SiActivo)
//            {                            
//                if (((UsuarioEstudiante)this.Session["UsuarioDeSesion"]).FechaPrimerIngreso == null)
//                {
//                    ((UsuarioEstudiante)this.Session["UsuarioDeSesion"]).FechaPrimerIngreso = DateTime.Now;
//                }
//                ((UsuarioEstudiante)this.Session["UsuarioDeSesion"]).FechaUltimoIngreso = DateTime.Now;

//                ((UsuarioEstudiante)this.Session["UsuarioDeSesion"]).Actualizar();

//                Response.Redirect(@"../Egresado/Perfil.aspx");
//                return;
//            }
//            else
//            {
//                this.Label_ResultMessage.Text = "Su usuario está desactivado";
//                this.TextBox_PassWord.Text = "";
//                return;
//            }
//        }
//        catch (Exception)
//        {
//            try
//            {
//                this.Session["UsuarioDeSesion"] = new UsuarioEmpresa(this.TextBox_UserName.Text.Trim(), this.TextBox_PassWord.Text.Trim());
//                this.Session["EmpresaID"] = ((UsuarioEmpresa)this.Session["UsuarioDeSesion"]).EmpresaProcedencia.ID;
//                //this.Label_ResultMessage.Text = "se ha logeado de empresa";

//                if (((UsuarioEmpresa)this.Session["UsuarioDeSesion"]).SiActivo && ((UsuarioEmpresa)this.Session["UsuarioDeSesion"]).EmpresaProcedencia.SiActiva)
//                {
//                    if (((UsuarioEmpresa)this.Session["UsuarioDeSesion"]).FechaPrimerIngreso == null)
//                    {
//                        ((UsuarioEmpresa)this.Session["UsuarioDeSesion"]).FechaPrimerIngreso = DateTime.Now;
//                    }
//                    ((UsuarioEmpresa)this.Session["UsuarioDeSesion"]).FechaUltimoIngreso = DateTime.Now;

//                    ((UsuarioEmpresa)this.Session["UsuarioDeSesion"]).Actualizar();

//                    Response.Redirect(@"~/Empresa/Perfil.aspx");
//                    return;
//                }
//                else
//                {
//                    this.Label_ResultMessage.Text = "Su usuario está desactivado";
//                    this.TextBox_PassWord.Text = "";
//                    return;
//                }
//            }
//            catch (Exception)
//            {
//                this.Label_ResultMessage.Text = "Error: Revise su nombre de usuario y contraseña o intente nuevamente en unos minutos";
//                this.TextBox_PassWord.Text = "";
//                return;
//            }
//        }
//    }
//}

#endregion        





